package Servidor;

import java.util.ArrayList;
import Servidor.Examen;
import Servidor.Pregunta;
import java.util.Date;

public class Profesor extends Usuario {

	private ArrayList<Examen> _listaExamenes = new ArrayList<Examen>();
	private ArrayList<Pregunta> _listaPreguntas = new ArrayList<Pregunta>();

	public Profesor() {
	}

	public Profesor(String _nombre, String _user, String _pass) {
		this._nombre = _nombre;
		this._user = _user;
		this._pass = _pass;
	}

	public void anyadirPregunta(String aIdAsig, String aIdTema, String aEnunciadoP) {
		Asignatura a;
		Tema t;
		Pregunta p = new Pregunta();

		a = findAsignatura(aIdAsig);
		t = a.findTema(aIdTema);
		p.setEnunciadoPregunta(aEnunciadoP);
		p.setProfesor(this);
		p.setTema(t);
		addPregunta(p);
		t.addPregunta(p);
	}

	public void addPregunta(Pregunta aP) {
		_listaPreguntas.add(aP);
	}


	public void anyadirRespuesta(String aIdPregunta, String aEnunciadoR, boolean aEsCierta) throws Exception {
		Pregunta p;
		Respuesta r;

		p = findPregunta(aIdPregunta);
		r = p.findRespuesta(aEnunciadoR);
		if (r != null) {
			throw new Exception("Hay más de una respuesta con el mismo enunciado");
		} else {
			r = new Respuesta();
			r.setEnunciadoRespuesta(aEnunciadoR);
			r.setEsCierta(aEsCierta);
			r.setPregunta(p);
			p.addRespuesta(r);
		}
	}

	public Pregunta findPregunta(String aIdPregunta) {
		for (int i = 0; i < _listaPreguntas.size(); i++) {
			if (_listaPreguntas.get(i).getEnunciadoPregunta().equals(aIdPregunta)) {
				return _listaPreguntas.get(i);
			}
		}
		return null;
	}

	public void ponerExamen(String aIdAsignatura, PaqDatos.InfoTema[] aTemas, Date aFechaIni, Date aFechaFin) throws Exception {

		Asignatura a = this.findAsignatura(aIdAsignatura);
		Examen ex = a.ponerExamen(aTemas, aFechaIni, aFechaFin);
		ex.setProfesor(this);
		this.addExamen(ex);

	}

	public void addExamen(Examen aExamen) {
		_listaExamenes.add(aExamen);
	}

	public PaqDatos.InfoExamen[] verNotasDelExamen(String aIdExamen) {
		Examen e = this.findExamen(aIdExamen);
		if(e == null)
			return new PaqDatos.InfoExamen[0];
		return e.getNotas();
	}

	public Examen findExamen(String aIdExamen) {

		for (int i = 0; i < _listaExamenes.size(); i++) {
			if (_listaExamenes.get(i).getIdExamen().equals(aIdExamen)) {
				return _listaExamenes.get(i);
			}
		}

		return null;
	}

	public ArrayList<Examen> getExamenesProf(){
		return _listaExamenes;
	}
}